package com.xiaojian.blog.service;

import com.github.pagehelper.PageInfo;
import com.xiaojian.blog.model.ContentPO;
import com.xiaojian.blog.model.ContentPOExample;

/**
 * 内容服务接口
 */
public interface ContentService {

    /**
     * 发布文章
     * @param contentPO 每一篇文章的实体
     * @return
     */
    String publish(ContentPO contentPO);

    /**
     * 查询文章返回多条数据
     * @param p 当前页
     * @param limit 每页显示数目
     * @return
     */
    PageInfo<ContentPO> getContents(Integer p, Integer limit);

    /**
     * 根据id或者内容缩略slug获取文章
     * @param id id
     * @return 文章实体
     */
    ContentPO getContents(String id);

    /**
     * 根据主键更新文章
     * @param contentPO 文章对象
     */
    void updateContentByCid(ContentPO contentPO);

    /**
     * 查询分类或标签标签下的文章归档
     * @param min min
     * @param page page
     * @param limit limit
     * @return
     */
    PageInfo<ContentPO> getArticles(Integer min, int page, int limit);

    /**
     * 根据条件分页搜索
     * @param keyword 关键字
     * @param page 页码
     * @param limit 每页显示数目
     * @return
     */
    PageInfo<ContentPO> getArticles(String keyword, Integer page, Integer limit);

    /**
     *
     * @param contentPOExample
     * @param page
     * @param limit
     * @return
     */
    PageInfo<ContentPO> getArticlesWithpage(ContentPOExample contentPOExample,
                                            Integer page, Integer limit);



    /**
     * 根绝id删除文章
     * @param cid 主键
     * @return
     */
    String deleteByCid(Integer cid);

    /**
     * 编辑文章/更新
     * @param contentPO 文章对象
     * @return
     */
    String updateArticle(ContentPO contentPO);

    /**
     * 更新原有文章的分类
     * @param ordinal 序列
     * @param newCategory 新的分类
     */
    void updateCategory(String ordinal, String newCategory);
}
